/**  
 * <p>Title: EventData.java</p>  
 * <p>Description: 数据模型</p>  
 * <p>Copyright: Copyright (c) 2018</p>    
 * @author ji'anyuan  
 * @date 2018年3月10日  
 * @version 1.0  
 */
package org.mango.jiayin.operater.domain;

import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * <p>
 * Title: EventData
 * </p>
 * <p>
 * Description: 数据模型
 * </p>
 * 
 * @author ji'anyuan
 * @date 2018年3月10日
 */
public class EventData {

	/**
	 * 数据集合
	 */
	private Map<String, Object> dataMap = new ConcurrentHashMap<>();

	/**
	 * @return the dataMap
	 */
	public Map<String, Object> getDataMap() {
		return dataMap;
	}

	/**
	 * @param dataMap
	 *            the dataMap to set
	 */
	public void setDataMap(Map<String, Object> dataMap) {
		this.dataMap = dataMap;
	}

	/**
	 * 
	 * <p>Title: getValue</p>  
	 * <p>Description: 根据key返回集合中的value</p>  
	 * @param key
	 * @return
	 */
	public Object getValue(String key) {
		if (dataMap.containsKey(key)) {
			return dataMap.get(key);
		}
		return null;
	}

	/**
	 * 
	 * <p>Title: getValueOrDefault</p>  
	 * <p>Description: 根据key返回集合中的value,如果没有就返回默认值</p>  
	 * @param key
	 * @param defaultValue
	 * @return
	 */
	public Object getValueOrDefault(String key, Object defaultValue) {
		if (dataMap.containsKey(key)) {
			return dataMap.getOrDefault(key, defaultValue);
		}
		return defaultValue;
	}

	/**
	 * 
	 * <p>Title: getValueToInt</p>  
	 * <p>Description: 根据key返回集合中的value,并转换成Interger</p>  
	 * @param key
	 * @return
	 */
	public Integer getValueToInt(String key) {
		if (dataMap.containsKey(key)) {
			return (Integer) dataMap.get(key);
		}
		return null;
	}

	/**  
	 * <p>Title: getValueToStr</p>  
	 * <p>Description: 根据key返回集合中的value,并转换成String</p>  
	 * @param key
	 * @return  
	 */ 
	public String getValueToStr(String key) {
		if (dataMap.containsKey(key)) {
			return (String) dataMap.get(key);
		}
		return null;
	}

	/**  
	 * <p>Title: getValueToDouble</p>  
	 * <p>Description: 根据key返回集合中的value,并转换成Double</p>  
	 * @param key
	 * @return  
	 */ 
	public Double getValueToDouble(String key) {
		if (dataMap.containsKey(key)) {
			return (Double) dataMap.get(key);
		}
		return null;
	}

	/**
	 * <p>
	 * Title: getValueToLong
	 * </p>
	 * <p>
	 * Description: 根据key返回集合中的value,并转换成Long
	 * </p>
	 * 
	 * @param key
	 * @return
	 */ 
	public Long getValueToLong(String key) {
		if (dataMap.containsKey(key)) {
			return (Long) dataMap.get(key);
		}
		return null;
	}

	@Override
	public String toString() {
		return JSON.toJSONString(this.dataMap);
	}
}
